--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/setup.js 033004824d4b26738d8dd2b830bf199680f38f4f (03300482) Text, 3.88 KB
Tff7b72import Ta5d6ff"fake-indexeddb/auto"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3readFileSyncTb4b4b4, Te6edf3existsSync Tb4b4b4} Tff7b72from Ta5d6ff"fs"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3join Tb4b4b4} Tff7b72from Ta5d6ff"path"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3vi Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3config Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Te6edf3createDOMPurify Tff7b72from Ta5d6ff"dompurify"Tb4b4b4;
Tff7b72const Te6edf3EMOJI_PICKER_DATA_PATH Tff7b72= Te6edf3joinTb4b4b4(
Te6edf3processTb4b4b4.Te6edf3cwdTb4b4b4(Tb4b4b4)Tb4b4b4,
Ta5d6ff"node_modules"Tb4b4b4,
Ta5d6ff"emoji-picker-element-data"Tb4b4b4,
Ta5d6ff"en"Tb4b4b4,
Ta5d6ff"emojibase"Tb4b4b4,
Ta5d6ff"data.json"
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3origFetch Tff7b72= Tffa657globalThisTb4b4b4.Te6edf3fetchTb4b4b4;
Tffa657globalThisTb4b4b4.Te6edf3fetch Tff7b72= Tff7b72async Tb4b4b4(Te6edf3inputTb4b4b4, Te6edf3initTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3reqUrl Tff7b72= Tff7b72typeof Te6edf3input Tff7b72=== Ta5d6ff"string" Tff7b72? Te6edf3input Tff7b72: Te6edf3inputTff7b72?Tb4b4b4.Te6edf3url Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(
Te6edf3reqUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"emoji-picker-element-data"Tb4b4b4) Tff7b72&&
Te6edf3reqUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"data.json"Tb4b4b4) Tff7b72&&
Te6edf3existsSyncTb4b4b4(Te6edf3EMOJI_PICKER_DATA_PATHTb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3data Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3EMOJI_PICKER_DATA_PATHTb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72new Te6edf3ResponseTb4b4b4(Te6edf3dataTb4b4b4, Tb4b4b4{ Te6edf3statusTff7b72: T79c0ff200Tb4b4b4, Te6edf3headersTff7b72: Tb4b4b4{ Ta5d6ff"Content-Type"Tff7b72: Ta5d6ff"application/json" Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3origFetch Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3origFetchTb4b4b4(Te6edf3inputTb4b4b4, Te6edf3initTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6fffetch not available for Tffd700${Te6edf3reqUrlTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
T8b949e// Initialize DOMPurify with the jsdom window
Tff7b72let Te6edf3DOMPurifyTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3createDOMPurify Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Te6edf3DOMPurify Tff7b72= Te6edf3createDOMPurifyTb4b4b4(Tffa657windowTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3createDOMPurify Tff7b72&& Tff7b72typeof Te6edf3createDOMPurifyTb4b4b4.Tff7b72default Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Te6edf3DOMPurify Tff7b72= Te6edf3createDOMPurifyTb4b4b4.Tff7b72defaultTb4b4b4(Tffa657windowTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3DOMPurify Tff7b72= Te6edf3createDOMPurifyTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to initialize DOMPurify:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Global mocks
Tff7b72if Tb4b4b4(Te6edf3DOMPurifyTb4b4b4) Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3DOMPurify Tff7b72= Te6edf3DOMPurifyTb4b4b4;
Tffa657windowTb4b4b4.Te6edf3DOMPurify Tff7b72= Te6edf3DOMPurifyTb4b4b4;
Tb4b4b4}
Tffa657globalTb4b4b4.Te6edf3performanceTb4b4b4.Te6edf3mark Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3performanceTb4b4b4.Te6edf3measure Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3performanceTb4b4b4.Te6edf3getEntriesByName Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3performanceTb4b4b4.Te6edf3clearMarks Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3performanceTb4b4b4.Te6edf3clearMeasures Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Mock window.api by default to prevent TypeErrors
Tffa657globalTb4b4b4.Te6edf3api Tff7b72= Tb4b4b4{
Te6edf3getTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3postTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3putTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3patchTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tff7b72deleteTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3isCancelTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockReturnValueTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3api Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4;
T8b949e// Stub all Vuetify components to avoid warnings and CSS issues
Te6edf3configTb4b4b4.Tffa657globalTb4b4b4.Te6edf3stubs Tff7b72= Tb4b4b4{
Te6edf3MaterialDesignIconTff7b72: Tb4b4b4{ Te6edf3templateTff7b72: Ta5d6ff'<div class="mdi-stub"><slot /></div>' Tb4b4b4}Tb4b4b4,
Te6edf3RouterLinkTff7b72: Tb4b4b4{ Te6edf3templateTff7b72: Ta5d6ff"<a><slot /></a>" Tb4b4b4}Tb4b4b4,
Te6edf3RouterViewTff7b72: Tb4b4b4{ Te6edf3templateTff7b72: Ta5d6ff"<div><slot /></div>" Tb4b4b4}Tb4b4b4,
T8b949e// Common Vuetify components
Ta5d6ff"v-app"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-main"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-container"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-row"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-col"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-btn"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-icon"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-card"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-card-title"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-card-text"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-card-actions"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-dialog"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-text-field"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-textarea"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-select"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-switch"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-checkbox"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-list"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-list-item"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-list-item-title"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-list-item-subtitle"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-menu"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-divider"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-spacer"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-progress-circular"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-progress-linear"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-tabs"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-tab"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-window"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-window-item"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-expansion-panels"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-expansion-panel"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-expansion-panel-title"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-expansion-panel-text"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-chip"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-toolbar"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-toolbar-title"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-tooltip"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-alert"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-snackbar"Tff7b72: Tff7b72trueTb4b4b4,
Ta5d6ff"v-badge"Tff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4;
T8b949e// Mock window.matchMedia
Tffa657ObjectTb4b4b4.Te6edf3definePropertyTb4b4b4(Tffa657windowTb4b4b4, Ta5d6ff"matchMedia"Tb4b4b4, Tb4b4b4{
Te6edf3writableTff7b72: Tff7b72trueTb4b4b4,
Te6edf3valueTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3queryTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3matchesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3mediaTff7b72: Te6edf3queryTb4b4b4,
Te6edf3onchangeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3addListenerTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4, T8b949e// deprecated
Te6edf3removeListenerTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4, T8b949e// deprecated
Te6edf3addEventListenerTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3removeEventListenerTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3dispatchEventTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────